Telegram Group Search
🧑‍💻 How to: как упаковать и опубликовать библиотеку с помощью GitHub Actions

Если вы пишете кроссплатформенные библиотеки на .NET MAUI и хотите настроить CI/CD без боли — это то, что вам нужно.

Microsoft в своём блоге дали подробный пошаговый пример, как всё это настроить.

Кратко, что вы получите:

Cборка библиотеки и упаковка в NuGet-пакет

Автоматическая генерация версий

Публикация пакета на NuGet прямо из GitHub Actions

Всё в одном YAML-файле

➡️ Оригинальный гайд

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Холивар: Identity невозможно понять

Если вы когда-либо пытались внедрить .NET Identity в реальном проекте, скорее всего, в какой-то момент хотели всё выбросить и переписать вручную. Ошибки, магия, дублирующиеся слои абстракций — создаётся ощущение, будто Microsoft намеренно сделала систему сложной. Но действительно ли всё так плохо?

⚠️ Боль разработчиков

• Создаётся впечатление, что каждая операция в Identity прячется в отдельном сервисе, интерфейсе, конструкторе, и всё это трудно дебажить или изменить без побочного эффекта.

• Хочется добавить поле «роль по умолчанию»? Придётся лезть в UserStore, ClaimsPrincipal, кастомизировать SignInManager, и всё это — чтобы в итоге наткнуться на какое-нибудь исключение в рантайме.

• Информации много, но она либо слишком базовая, либо устаревшая. Найти последовательный, жизненный путь от «у меня есть пользователь» до «работающая авторизация и кастомные роли» — задача не для слабонервных.

• Всё как будто работает «само», пока не надо изменить стандартный пайплайн. А как только вы влезаете внутрь — начинается танец с отладчиком.

💡 Почему всё-таки используют Identity

• Это из коробки. Не нужно писать свою систему безопасности (что, к слову, тоже не лучшая идея, если вы не эксперт в этой области).

• Она глубоко интегрирована с ASP.NET Core — пайплайны, мидлвары, авторизация через policy и claims.

• Есть возможность настроить под корпоративные сценарии: многофакторная авторизация, внешние логины, JWT, и всё это — пусть и криво, но реализуемо.

🔁 Есть ли альтернатива


• Сторонние провайдеры (Auth0, Azure AD B2C): проще, но вы зависите от внешнего сервиса.

• Собственные реализации: подойдёт, если требования простые, но нужна аккуратность в вопросах безопасности.

• Обёртки над Identity: некоторые компании и команды создают свои слои поверх Identity, скрывая его сложности и предоставляя более удобный API.

💬 Вы пробовали настраивать Identity с нуля? С какими проблемами столкнулись? Делитесь своим опытом и мнением в комментариях 👇

🐸Библиотека шарписта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Набор разработчика без браузера

DevToys — это оффлайн десктопное приложение, объединяющее десятки полезных инструментов в одном месте.

Что умеет

• Конвертировать JSON в YAML в XML и наоборот

• Хэшировать строки

• Декодировать/кодировать Base64, URL

• Форматировать SQL, CSS, JS

• Генерировать GUID, Lorem Ipsum

• Проверять регулярные выражения

Не веб-сервис, а локальный инструмент, который просто делает своё дело.

➡️ Попробовать DevToys

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Redis снова open source

Ранее Redis перешёл на более ограничительные лицензии, такие как SSPL, чтобы защититься от использования их кода крупными облачными провайдерами без должной компенсации.

Цели были достигнуты — AWS и Google теперь поддерживают собственные форки Redis. Но лицензия SSPL не признана OSI как Open Source, что вызвало критику и отток пользователей.

С возвращением Сальваторе Санфилиппо, создателя Redis, в ноябре 2024 года, начались обсуждения о возвращении к более открытой модели лицензирования.

❗️В результате Redis 8 теперь доступен под лицензией AGPLv3, что восстанавливает его статус как настоящего Open Source проекта.

➡️ Возрадуйтесь открытому Redis

🐸Библиотека шарписта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🆕 Дайджест недели

Самое интересное, что произошло за последние семь дней.

Redis снова open source
Благодаря возвращению основателя Сальваторе Санфилиппо, Redis вернулся к открытой лицензии.

Microsoft автоматизирует обновление файлов .NET с помощью ИИ
Команда .NET успешно модернизировала систему сборки своего фреймворка, применив ИИ для автоматического преобразования около 300 проектов из кастомных файлов в MSBuild.

Масштабный релиз Wolverine
В релизе Wolverine 3.13 представлено множество улучшений, включая поддержку HTTP-форм с атрибутом [AsParameters], а также добавлены улучшения для работы с F#, Pulsar и Kafka.

Библиотека программиста запускает конкурс на самую смешную новость
Денежные призы самым смешным новостям

🐸Библиотека шарписта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость

Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.

📅 Сроки: прием новостей до 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Осталась неделя — ждем ваших новостей!
Подборка вакансий для шарпистов (на этот раз и F тоже)

.NET Xamarin/MAUI Mobile Developer — Гибрид (Санкт-Петербург)

С#-разработчик — Гибрид (Москва)

C# Разработчик — Офис (Москва)

C# F# Developer Junior — от 80 000, Удалённо

Бустер — Удалённо (весь мир)

➡️ Еще больше топовых вакансий — в нашем канале С# Jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 How to: как соблюдать принцип DRY

DRY (Don’t Repeat Yourself) — принцип, согласно которому каждый фрагмент знания должен существовать в системе только в одном месте. Никакого копипаста и дублирующей логики.

Проблема: дублирование валидации
// Пример плохого кода
if (user.Age < 18)
throw new Exception("User must be at least 18");

...

if (user.Age < 18)
return BadRequest("User must be at least 18");

При изменении правила — нужно помнить обновить его везде. Ловушка копипаста.

Решение: вынос логики в общее правило
public static class ValidationRules
{
public static bool IsAdult(User user) => user.Age >= 18;
}


Теперь в коде
if (!ValidationRules.IsAdult(user))
throw new Exception("User must be at least 18");

// И в другом месте:
if (!ValidationRules.IsAdult(user))
return BadRequest("User must be at least 18");


Альтернатива: использование FluentValidation или DataAnnotations
public class User
{
[Range(18, int.MaxValue, ErrorMessage = "User must be at least 18")]
public int Age { get; set; }
}


Где чаще всего нарушают DRY в .NET:


• Повторяющиеся SQL-запросы и фильтры
• Повторение одинаковых exception'ов, логов, сообщений
• Дублирование конфигурации
• UI-формы и компоненты

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🧱 7 архитектурных паттернов, которые должен знать каждый программист

В быстро меняющемся мире разработки от программиста всё чаще требуется не просто писать код, а понимать, как правильно проектировать системы.

Архитектурные паттерны — это фундаментальные подходы, помогающие создавать масштабируемые, устойчивые и поддерживаемые решения.

В статье собрали и разобрали 7 архитектурных паттернов, которые сегодня стоит знать каждому разработчику — будь то разработка микросервисов, проектирование API или работа с распределёнными транзакциями.

➡️ Узнать паттерны

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Команда дня: сборка, которой не нужен .NET

Сегодня покажем команду, которая используется для публикации .NET-приложения, готового к развертыванию на целевой платформе (в данном случае — Linux x64):
dotnet publish -c Release -r linux-x64 --self-contained true


Расшифровка параметров

dotnet publish
Основная команда .NET CLI, предназначенная для компиляции приложения и подготовки всех необходимых файлов для его запуска.

-c Release
Указывает конфигурацию сборки. В данном случае Release означает, что будет использована конфигурация для продакшн-сборки, в отличие от Debug, где остаются отладочные символы и меньше оптимизаций.

-r linux-x64
Указывает целевую платформу. Здесь linux-x64 означает, что публикуемое приложение будет запускаться на 64-битной Linux-системе.

--self-contained true
Делает сборку самодостаточной: весь .NET Runtime и все зависимости включаются в сборку.
Это позволяет запускать приложение на машине без установленного .NET.

Это похоже на то, как если бы вы не просто упаковали ваш код, а положили его вместе с собственной версией операционной системы. Он будет работать «в вакууме», не завися от того, что есть на машине пользователя.

🐸Библиотека шарписта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/05/17 23:55:26
Back to Top
HTML Embed Code: